package org.luxor.commons.redis.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 滑动窗口方式进行接口限流
 *
 * @author Mr.yan @date 2019/10/20
 */
@Target(value = {ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface LimitRate {
    /**
     * 键值(建议为"登陆账号"或"客户端ID")
     * <p>
     * 默认空串，代表对系统接口进行调用频率限制
     * 如传用户ID，代表对某用户进行某接口调用频率限制
     */
    String key() default "";

    /**
     * 间隔时间内最大处理数
     */
    int rate() default 80;

    /**
     * 间隔时间(单位：毫秒)
     */
    int intervalTime() default 1000;
}
